﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Arthus
{
    public partial class nalogProdajeForma : Form
    {
        public static int idZaglavlja;
        public nalogProdajeForma(int zaglavljeID)
        {
            InitializeComponent();
            idZaglavlja = zaglavljeID;
            dateTimePickerDatumUnosa.Value = System.DateTime.Now;
            dateTimePickerDatumDokumenta.Value = System.DateTime.Now;
            posjedObjekat.PopuniComboBoxMaloprodaja(comboBoxProdajnaJedinica);
            checkBoxAutoBrojDokumenta.Checked = true;
            ProveraPostojanostiZagIDNalogaProdaje();

        }
        Posjed posjedObjekat = new Posjed();
        ZAG zagObjekat = null;
        STV stvObjekat = null;
        stavkaNalogaProdaje stavkaNalogaProdajeObjekat = null;

        private void PromenaCheckBoxAutoBrojDokumenta()
        { //metoda koja menja vizibilnost textbox-ova automatskog broja dokumenta
            if (checkBoxAutoBrojDokumenta.Checked == true)
            {
                //ako je cekiran checkBoxAutoBrojDokumenta
                textBoxAutomatskiBrojDokumenta1.Enabled = false;
                textBoxAutomatskiBrojDokumenta2.Enabled = false;
            }
            else
            {
                //ako nije cekiran
                textBoxAutomatskiBrojDokumenta1.Enabled = true;
                textBoxAutomatskiBrojDokumenta2.Enabled = true;
            }
        }
        private void checkBoxAutoBrojDokumenta_CheckedChanged(object sender, EventArgs e)
        {
            PromenaCheckBoxAutoBrojDokumenta();
        }

        public void ProveraPostojanostiZagIDNalogaProdaje()
        {
            zagObjekat = new ZAG();
            if (idZaglavlja==0)
            {
                buttonUnesi.Enabled = true;
                buttonIzmeni.Enabled = false;
                buttonDodajStavku.Enabled = false;
                buttonIzmeniStavku.Enabled = false;
                buttonObrisiStavku.Enabled = false;

                comboBoxProdajnaJedinica.Enabled = true;
                textBoxAutomatskiBrojDokumenta1.ReadOnly = false;
                textBoxAutomatskiBrojDokumenta2.ReadOnly = false;
            }
            else
            {
                buttonUnesi.Enabled = false;
                buttonIzmeni.Enabled = true;
                buttonDodajStavku.Enabled = true;
                buttonIzmeniStavku.Enabled = true;
                buttonObrisiStavku.Enabled = true;

                comboBoxProdajnaJedinica.Enabled = false;
                if (dataGridViewStavkeNalogaProdaje.RowCount <= 0)
                {
                    buttonDodajStavku.Enabled = true;
                    buttonIzmeniStavku.Enabled = false;
                    buttonObrisiStavku.Enabled = false;
                }
            }
        }
        private void nalogProdajeForma_Load(object sender, EventArgs e)
        {
            zagObjekat = new ZAG();
            zagObjekat.PopuniKontroleNalogaProdaje(dateTimePickerDatumUnosa, comboBoxProdajnaJedinica, textBoxAutomatskiBrojDokumenta1, textBoxAutomatskiBrojDokumenta2,
                dateTimePickerDatumDokumenta, idZaglavlja.ToString());
            stvObjekat = new STV();
            stvObjekat.StavkeNalogaProdajePopuniGridView(dataGridViewStavkeNalogaProdaje, idZaglavlja.ToString());
            ProveraPostojanostiZagIDNalogaProdaje();
        }

        private void nalogProdajeForma_Activated(object sender, EventArgs e)
        {
            zagObjekat = new ZAG();
            zagObjekat.PopuniKontroleNalogaProdaje(dateTimePickerDatumUnosa, comboBoxProdajnaJedinica, textBoxAutomatskiBrojDokumenta1, textBoxAutomatskiBrojDokumenta2,
                dateTimePickerDatumDokumenta, idZaglavlja.ToString());
            stvObjekat = new STV();
            stvObjekat.StavkeNalogaProdajePopuniGridView(dataGridViewStavkeNalogaProdaje, idZaglavlja.ToString());
            stvObjekat.PopuniVrednostiZaPunjenjeTextBoxaNalogProdajeForma(dataGridViewStavkeNalogaProdaje, textBoxRacunUkupno);
            ProveraPostojanostiZagIDNalogaProdaje();
        }

        private void buttonZatvori_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void buttonUnesi_Click(object sender, EventArgs e)
        {
            zagObjekat.UbaciUZAGzaMNP("MNP", dateTimePickerDatumUnosa, comboBoxProdajnaJedinica, textBoxAutomatskiBrojDokumenta1, textBoxAutomatskiBrojDokumenta2, 
                dateTimePickerDatumDokumenta);
            idZaglavlja = zagObjekat.VratiPovecanID() - 1;
            zagObjekat.PopuniKontroleNalogaProdaje(dateTimePickerDatumUnosa, comboBoxProdajnaJedinica, textBoxAutomatskiBrojDokumenta1, textBoxAutomatskiBrojDokumenta2,
                dateTimePickerDatumDokumenta, idZaglavlja.ToString());
            ProveraPostojanostiZagIDNalogaProdaje();
        }

        private void buttonIzmeni_Click(object sender, EventArgs e)
        {
            zagObjekat = new ZAG();
            zagObjekat.IzmeniUZAGzaMNP("MNP", dateTimePickerDatumUnosa, comboBoxProdajnaJedinica, textBoxAutomatskiBrojDokumenta1, textBoxAutomatskiBrojDokumenta2,
                dateTimePickerDatumDokumenta, idZaglavlja.ToString());
            zagObjekat.PopuniKontroleNalogaProdaje(dateTimePickerDatumUnosa, comboBoxProdajnaJedinica, textBoxAutomatskiBrojDokumenta1, textBoxAutomatskiBrojDokumenta2,
                dateTimePickerDatumDokumenta, idZaglavlja.ToString());
            ProveraPostojanostiZagIDNalogaProdaje();
        }

        private void buttonObrisiStavku_Click(object sender, EventArgs e)
        {
            stvObjekat = new STV();
            stvObjekat.ObrisiStavkuPremaID(Convert.ToInt32(dataGridViewStavkeNalogaProdaje.SelectedRows[0].Cells[1].Value.ToString()));
            MessageBox.Show("Stavka je uspešno obrisana ");
        }

        private void dataGridViewStavkeNalogaProdaje_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            stavkaNalogaProdajeObjekat = new stavkaNalogaProdaje(dataGridViewStavkeNalogaProdaje.SelectedRows[0].Cells[1].Value.ToString(),
                dataGridViewStavkeNalogaProdaje.SelectedRows[0].Cells[5].Value.ToString());
            stavkaNalogaProdajeObjekat.ShowDialog();
        }

        private void buttonDodajStavku_Click(object sender, EventArgs e)
        {
            stavkaNalogaProdajeObjekat = new stavkaNalogaProdaje("", "");
            stavkaNalogaProdajeObjekat.ShowDialog();
        }

        private void buttonIzmeniStavku_Click(object sender, EventArgs e)
        {
            stavkaNalogaProdajeObjekat = new stavkaNalogaProdaje(dataGridViewStavkeNalogaProdaje.SelectedRows[0].Cells[1].Value.ToString(),
                dataGridViewStavkeNalogaProdaje.SelectedRows[0].Cells[5].Value.ToString());
            stavkaNalogaProdajeObjekat.ShowDialog();
        }

        private void buttonStampanje_Click(object sender, EventArgs e)
        {
            if (dataGridViewStavkeNalogaProdaje.RowCount > 0)
            {
                this.Cursor = Cursors.WaitCursor;
                NalogProdajeStampanjeForma nalogProdajeStampanjeFormaObjekat = new NalogProdajeStampanjeForma(dataGridViewStavkeNalogaProdaje.Rows[0].Cells[1].Value.ToString(),
                    dataGridViewStavkeNalogaProdaje.Rows[dataGridViewStavkeNalogaProdaje.RowCount - 1].Cells[1].Value.ToString());
                nalogProdajeStampanjeFormaObjekat.ShowDialog();
                this.Cursor = Cursors.Default;
            }
            else
            {
                MessageBox.Show("Morate imati neke stavke da bi ste štampali");
            }
        }

        private void textBoxAutomatskiBrojDokumenta1_KeyPress(object sender, KeyPressEventArgs e)
        {
            Razno.DozvoliSamoBrojeve(sender, e);
        }

        private void textBoxAutomatskiBrojDokumenta2_KeyPress(object sender, KeyPressEventArgs e)
        {
            Razno.DozvoliSamoBrojeve(sender, e);
        }
    }
}
